#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>

int main(int argc, char const *argv[])
{
    printf("before fork\n");
    pid_t pid = fork();
    if(pid == -1){
        perror("fork error");
        exit(1);
    }else if(pid == 0){
        printf("%d is a child process, parent is %d\n",getpid(),getppid());
    }else{
        printf("parent:%d, my child is %d\n",getpid(),pid);
    }
    printf("====================\n");
    return 0;
}
/*
父子进程相同：
刚 fork 后。 data 段、text 段、堆、栈、环境变量、全局变量、宿主目录位置、进程工作目录位
置、信号处理方式
父子进程不同：
进程 id、返回值、各自的父进程、进程创建时间、闹钟、未决信号集
父子进程共享：
读时共享、写时复制。———————— 全局变量。
1. 文件描述符 2. mmap 映射区。
*/